package mx.itesm.pruebadmescenas;

import org.andengine.engine.camera.Camera;
import org.andengine.entity.scene.menu.MenuScene;
import org.andengine.entity.scene.menu.MenuScene.IOnMenuItemClickListener;
import org.andengine.entity.scene.menu.item.IMenuItem;
import org.andengine.entity.scene.menu.item.SpriteMenuItem;
import org.andengine.entity.scene.menu.item.decorator.ScaleMenuItemDecorator;
import org.andengine.entity.sprite.Sprite;
import org.andengine.opengl.util.GLState;

public class EscenaMenu extends EscenaBase implements IOnMenuItemClickListener
{
	private Sprite fondo;

	// MENU principal
	private MenuScene menuPrincipal;
	private final int MENU_ACERCA = 0;
	private final int MENU_JUEGO = 1;

	@Override
	public void crearEscena() {
		
		fondo = new Sprite(0, 0, admRecursos.menuRegion, vbom) {
			@Override
			protected void preDraw(GLState pGLState, Camera pCamera) {
				super.preDraw(pGLState, pCamera);
				pGLState.enableDither();
			}
		};

		fondo.setPosition(ProyectoJuego.ANCHO_CAMARA/2, ProyectoJuego.ALTO_CAMARA/2);
		attachChild(fondo);

		// Botones
		//admRecursos.cargarRecursosBotones();
		crearOpcionesMenu();
	}

    @Override
    public void onBackKeyPressed()
    {
    		
    }

    	/**
    	 * Regresa el tipo de esta escena
    	 */
    @Override
    public TipoEscena getTipoEscena()
    {
    		return TipoEscena.ESCENA_MENU;
    }

    /**
     * Libera los recursos de esta escena
     */
	@Override
	public void liberarEscena() {
		fondo.detachSelf();
		fondo.dispose();
		this.detachSelf();
		this.dispose();
	}
	/*
	 * Crea el menú principal
	 */
	private void crearOpcionesMenu()
	{
		menuPrincipal = new MenuScene(camara);
		menuPrincipal.setPosition(ProyectoJuego.ANCHO_CAMARA/2, ProyectoJuego.ALTO_CAMARA/2);
	    
	    final IMenuItem miAcerca = new ScaleMenuItemDecorator(new SpriteMenuItem(MENU_ACERCA, admRecursos.btnAcercaRegion, vbom), 1.3f, 1);
	    final IMenuItem miPlay = new ScaleMenuItemDecorator(new SpriteMenuItem(MENU_JUEGO, admRecursos.btnPlayRegion, vbom), 1.3f, 1);
	    
	    menuPrincipal.addMenuItem(miAcerca);
	    menuPrincipal.addMenuItem(miPlay);
	    
	    menuPrincipal.buildAnimations();
	    menuPrincipal.setBackgroundEnabled(false);
	    
	    miAcerca.setPosition(-200, 50);
	    miPlay.setPosition(200, -50);
	    
	    menuPrincipal.setOnMenuItemClickListener(this);
	    
	    setChildScene(menuPrincipal);
	}

	// Se ejecuta cuando el usuario oprime un botón del menú
	@Override
	public boolean onMenuItemClicked(MenuScene pMenuScene, IMenuItem pMenuItem,
			float pMenuItemLocalX, float pMenuItemLocalY) {
		
		switch (pMenuItem.getID()) {
		case MENU_JUEGO:
			admEscenas.crearEscenaJuego();
			admEscenas.setEscena(TipoEscena.ESCENA_JUEGO);
			admEscenas.liberarEscenaMenu();
			return true;
		case MENU_ACERCA:
			admEscenas.crearEscenaAcercaDe();
			admEscenas.setEscena(TipoEscena.ESCENA_ACERCA_DE);
			admEscenas.liberarEscenaMenu();
			return true;
		}
		return false;
	}
}